package com.zk.algorithm.sortingandsearching;

import com.zk.algorithm.Utils;
import com.zk.algorithm.annotation.Easy;
import com.zk.algorithm.annotation.LeetCodeExplore;

/**
 * @author zk
 */
@LeetCodeExplore
@Easy
public class MergeSortedArray {

    // nums1 = [1,2,3,0,0,0], m = 3
    // nums2 = [2,5,6],       n = 3
    //
    // [1,2,2,3,5,6]
    //
    // 下面方案不通过： [0] 0 [1] 1，后来就加上了最下面的那行 n--;
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        while (m > 0 && n > 0) {
            int index = m + n - 1;

            if (nums2[n - 1] > nums1[m - 1]) {
                nums1[index] = nums2[n - 1];
                n--;
            } else {
                nums1[index] = nums1[m - 1];
                m--;
            }
        }

        while (n > 0) {
            nums1[n - 1] = nums2[n - 1];
            n--;
        }
    }

    public static void main(String...args) {
        int[] nums1 = new int[]{ 0 };
        int[] nums2 = new int[]{ 1 };

        new MergeSortedArray().merge(nums1, 0, nums2, 1);

        Utils.println(nums1);
    }

}
